package day230329;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/3/29 22:00
 * 井字棋游戏
 */
public class Board {

    // 返回当前玩家是否胜出, board 表示棋盘, 1 表示自己的棋子, 0 表示没有棋子, -1 表示对方的棋子
    public boolean checkWon(int[][] board) {
        // 当且仅当一横行、一竖列、对角线和为 3 时, 当前玩家才能胜出
        int sum = 0; // 用于记录和
        // 判断行
        for (int i = 0; i < board.length; i++) {
            sum = 0;
            for (int j = 0; j < board[i].length; j++) {
                sum += board[i][j];
            }
            if (sum == 3) {
                return true;
            }
        }
        // 判断列
        for (int i = 0; i < board.length; i++) {
            sum = 0;
            for (int j = 0; j < board[i].length; j++) {
                sum += board[j][i];
            }
            if (sum == 3) {
                return true;
            }
        }
        // 判断主对角线
        sum = 0;
        for (int i = 0; i < board.length; i++) {
            sum += board[i][i];
        }
        if (sum == 3) {
            return true;
        }
        // 判断副对角线
        sum = 0;
        for (int i = 0; i < board.length; i++) {
            sum += board[i][board.length-1-i];
        }
        if (sum == 3) {
            return true;
        }
        return false;
    }
}
